home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / win / pascal / mscrol.exe / MUSCROLL.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-01-26  |  5.3 KB  |  176 lines

  1.  
  2. {$A+}   { Align data }
  3. {$B-}   { Boolean evaluation }
  4. {$D-}   { Debug information }
  5. {$F-}   { Force FAR calls }
  6. {$G+}   { 80286 code }
  7. {$I-}   { I/O checking }
  8. {$K-}   { Smart Callbacks }
  9. {$L+}   { Local symbols }
  10. {$N-}   { 80x87 code }
  11. {$O-}   { Overlays allowed }
  12. {$P-}   { Open parameters }
  13. {$R-}   { Range checking }
  14. {$S-}   { Stack checking }
  15. {$Q-}   { Overflow checking }
  16. {$T-}   { Typed @ operators }
  17. {$V-}   { String VAR checking }
  18. {$W-}   { Windows stack frame for real mode }
  19. {$X+}   { Extended syntax }
  20. {$Y+}   { Symbol reference information }
  21.  
  22. (*
  23.  * MUSCROLL.H (C header file)
  24.  *
  25.  * Public definitions for application that use the MicroScroll.
  26.  *  - Messages
  27.  *  - Prototypes for Message API Functions
  28.  *  - Notification codes.
  29.  *  - Control Styles.
  30.  *
  31.  * Version 1.1, October 1991, Kraig Brockschmidt
  32.  *
  33.  * Converted to a Pascal Unit by Olaf He▀ (CompuServe ID: 100 031, 35 36),
  34.  * January 1993
  35.  *)
  36.  
  37. UNIT MUSCROLL;
  38.  
  39. INTERFACE
  40.  
  41. USES WinTypes;
  42.  
  43. { Control-specific messages }
  44. CONST
  45.     MSM_HWNDASSOCIATESET  = WM_USER + 1;
  46.     MSM_HWNDASSOCIATEGET  = WM_USER + 2;
  47.     MSM_DWRANGESET        = WM_USER + 3;
  48.     MSM_DWRANGEGET        = WM_USER + 4;
  49.     MSM_WCURRENTPOSSET    = WM_USER + 5;
  50.     MSM_WCURRENTPOSGET    = WM_USER + 6;
  51.     MSM_FNOPEGSCROLLSET   = WM_USER + 7;
  52.     MSM_FNOPEGSCROLLGET   = WM_USER + 8;
  53.     MSM_FINVERTRANGESET   = WM_USER + 9;
  54.     MSM_FINVERTRANGEGET   = WM_USER + 10;
  55.     MSM_CRCOLORSET        = WM_USER + 11;
  56.     MSM_CRCOLORGET        = WM_USER + 12;
  57.  
  58. { Notification codes sent via WM_COMMAND from the control. }
  59.     MSN_ASSOCIATEGAIN   = 1;
  60.     MSN_ASSOCIATELOSS   = 2;
  61.     MSN_RANGECHANGE     = 3;
  62.  
  63.  
  64. { Color indices for MSM_COLORSET/GET and MSCrColorSet/Get }
  65.     MSCOLOR_FACE        = 0;
  66.     MSCOLOR_ARROW       = 1;
  67.     MSCOLOR_SHADOW      = 2;
  68.     MSCOLOR_HIGHLIGHT   = 3;
  69.     MSCOLOR_FRAME       = 4;
  70.  
  71.     CCOLORS             = 5;
  72.  
  73. { Control specific styles. }
  74.      MSS_VERTICAL        = $0001;
  75.      MSS_HORIZONTAL      = $0002;
  76.      MSS_NOPEGSCROLL     = $0004;
  77.      MSS_TEXTHASRANGE    = $0008;
  78.      MSS_INVERTRANGE     = $0010;
  79.  
  80. { Message API Functions }
  81. (* HWND     FAR PASCAL MSHAssociateSet(HWND hWnd, HWND hWndAssociate); *)
  82. FUNCTION MSHAssociateSet (hWnd, hWndAssociate: hWnd) : hWnd;
  83.  
  84. (* HWND     FAR PASCAL MSHAssociateGet(HWND hWnd); *)
  85. FUNCTION MSHAssociateGet (hWnd: hWnd) : hWnd;
  86.  
  87. (* DWORD    FAR PASCAL MSDwRangeSet(HWND hWnd, WORD iMin, WORD iMax); *)
  88. FUNCTION MSDwRangeSet (hWnd: hWnd; wMin, wMax: Word) : LongInt;
  89.  
  90. (* DWORD    FAR PASCAL MSDwRangeGet(HWND hWnd); *)
  91. FUNCTION MSDwRangeGet (hWnd: hWnd) : LongInt;
  92.  
  93. (* WORD     FAR PASCAL MSWCurrentPosSet(HWND hWnd, WORD iPos); *)
  94. FUNCTION MSWCurrentPosSet (hWnd: hWnd; wPos: Word) : Word;
  95.  
  96. (* WORD     FAR PASCAL MSWCurrentPosGet(HWND hWnd); *)
  97. FUNCTION MSWCurrentPosGet (hWnd: hWnd) : Word;
  98.  
  99. (* BOOL     FAR PASCAL MSFNoPegScrollSet(HWND hWnd, BOOL fNoPegScroll); *)
  100. FUNCTION MSFNoPegScrollSet (hWnd: hWnd; fNoPegScroll: bool) : bool;
  101.  
  102. (* BOOL     FAR PASCAL MSFNoPegScrollGet(HWND hWnd); *)
  103. FUNCTION MSFNoPegScrollGet (hWnd: hWnd) : bool;
  104.  
  105. (* BOOL     FAR PASCAL MSFInvertRangeSet(HWND hWnd, BOOL fInvertRange); *)
  106. FUNCTION MSFInvertRangeSet (hWnd: hWnd; fInvertRange: bool) : bool;
  107.  
  108. (* BOOL     FAR PASCAL MSFInvertRangeGet(HWND hWnd); *)
  109. FUNCTION MSFInvertRangeGet (hWnd: hWnd) : bool;
  110.  
  111. (* COLORREF FAR PASCAL MSCrColorSet(HWND hWnd, WORD iColor, COLORREF cr); *)
  112. FUNCTION MSCrColorSet (hWnd: hWnd; wColor: Word; cr: TColorRef) : TColorRef;
  113.  
  114. (* COLORREF FAR PASCAL MSCrColorGet(HWND hWnd, WORD iColor); *)
  115. FUNCTION MSCrColorGet (hWnd: hWnd; wColor: Word) : TColorRef;
  116.  
  117. IMPLEMENTATION
  118.  
  119. USES WinProcs;
  120.  
  121. VAR
  122.     pToExitProc : Pointer;
  123.     hLibHandle : THandle;
  124.  
  125. FUNCTION MSHAssociateSet (hWnd, hWndAssociate: hWnd) : hWnd;
  126.     EXTERNAL 'MUSCROLL' Index 7;
  127. FUNCTION MSHAssociateGet (hWnd: hWnd) : hWnd;
  128.     EXTERNAL 'MUSCROLL' Index 8;
  129. FUNCTION MSDwRangeSet (hWnd: hWnd; wMin, wMax: Word) : LongInt;
  130.     EXTERNAL 'MUSCROLL' Index 9;
  131. FUNCTION MSDwRangeGet (hWnd: hWnd) : LongInt;
  132.     EXTERNAL 'MUSCROLL' Index 10;
  133. FUNCTION MSWCurrentPosSet (hWnd: hWnd; wPos: Word) : Word;
  134.     EXTERNAL 'MUSCROLL' Index 11;
  135. FUNCTION MSWCurrentPosGet (hWnd: hWnd) : Word;
  136.     EXTERNAL 'MUSCROLL' Index 12;
  137. FUNCTION MSFNoPegScrollSet (hWnd: hWnd; fNoPegScroll: bool) : bool;
  138.     EXTERNAL 'MUSCROLL' Index 13;
  139. FUNCTION MSFNoPegScrollGet (hWnd: hWnd) : bool;
  140.     EXTERNAL 'MUSCROLL' Index 14;
  141. FUNCTION MSFInvertRangeSet (hWnd: hWnd; fInvertRange: bool) : bool;
  142.     EXTERNAL 'MUSCROLL' Index 15;
  143. FUNCTION MSFInvertRangeGet (hWnd: hWnd) : bool;
  144.     EXTERNAL 'MUSCROLL' Index 16;
  145. FUNCTION MSCrColorSet (hWnd: hWnd; wColor: Word; cr: TColorRef) : TColorRef;
  146.     EXTERNAL 'MUSCROLL' Index 17;
  147. FUNCTION MSCrColorGet (hWnd: hWnd; wColor: Word) : TColorRef;
  148.     EXTERNAL 'MUSCROLL' Index 18;
  149.  
  150. (* ---- *)
  151.  
  152. PROCEDURE NewExitProc; FAR;
  153. { Unload the DLL }
  154.  
  155. BEGIN
  156.     FreeLibrary (hLibHandle);
  157.     ExitProc := pToExitProc;
  158. END; { NewExitProc }
  159.  
  160. (* ---- *)
  161.  
  162. BEGIN { MUSCROLL }
  163.     { Load the DLL }
  164.     hLibHandle := LoadLibrary ('MUSCROLL.DLL');
  165.  
  166.     IF (hLibHandle < 32) THEN
  167.     BEGIN { Failed to load library }
  168.         MessageBox (0, 'Could not load MUSCROLL.DLL', 'Error', mb_IconStop);
  169.         Halt (0);
  170.     END; { if }
  171.  
  172.     pToExitProc := ExitProc;
  173.     ExitProc := @NewExitProc;
  174. END. { MUSCROLL }
  175.  
  176.